home *** CD-ROM | disk | FTP | other *** search
/ World of Education / World of Education.iso / world_p / pcshx10b.zip / PCSHX10B.EXE / GNUFGREP.EXE / GREPDOCS.EXE / STD.H < prev    next >
C/C++ Source or Header  |  1990-08-30  |  4KB  |  149 lines

  1. /* std.h - automagically adapt to old and new compilers.
  2.    In the Public Domain; written by Mike Haertel. */
  3. /* Hacked a mite by Barry Schwartz */
  4.  
  5. #ifdef __STDC__
  6.  
  7. #include <stddef.h>
  8. #include <limits.h>
  9.  
  10. typedef void *PTR;
  11. typedef const void *PTRCONST;
  12.  
  13. #define AND ,
  14. #define DEFUN(F, L, P) F(P)
  15. #define EXFUN(F, P) F P
  16.  
  17. #else
  18.  
  19. #define const
  20. #define volatile
  21.  
  22. /* The following approximations of <stddef.h> and <limits.h> are appropriate
  23.    for most machines. */
  24. typedef int ptrdiff_t;
  25. typedef unsigned int size_t;
  26. #define NULL 0
  27. #define offsetof(T, M) ((size_t)&((T *) 0)->(M))
  28.  
  29. #define CHAR_BIT 8
  30. #define SCHAR_MIN -128
  31. #define SCHAR_MAX 127
  32. #define UCHAR_MAX 255
  33. #define CHAR_MIN ((char) UCHAR_MAX < 0 ? SCHAR_MIN : 0)
  34. #define CHAR_MAX ((char) UCHAR_MAX < 0 ? SCHAR_MAX : UCHAR_MAX)
  35. #define SHRT_MIN -32768
  36. #define SHRT_MAX 32767
  37. #define USHRT_MAX 65535
  38. #define INT_MIN (sizeof (int) == 2 ? -32768 : -2147483648)
  39. #define INT_MAX (sizeof (int) == 2 ? 32767 : 2147483647)
  40. #define UINT_MAX (sizeof (int) == 2 ? 65535 : 4294967295)
  41. #define LONG_MIN -2147483648L
  42. #define LONG_MAX 2147483647L
  43. #define ULONG_MAX 4294967295
  44.  
  45. typedef char *PTR;
  46. typedef const char *PTRCONST;
  47.  
  48. #define AND ;
  49. #define DEFUN(F, L, P) F L P ;
  50. #define EXFUN(F, P) F()
  51.  
  52. #endif
  53.  
  54. /* Deal with <ctype.h> lossage. */
  55. #include <ctype.h>
  56.  
  57. #ifndef isascii
  58.  
  59. #define ISALNUM(C) isalnum(C)
  60. #define ISALPHA(C) isalpha(C)
  61. #define ISCNTRL(C) iscntrl(C)
  62. #define ISDIGIT(C) isdigit(C)
  63. #define ISGRAPH(C) isgraph(C)
  64. #define ISLOWER(C) islower(C)
  65. #define ISPRINT(C) isprint(C)
  66. #define ISPUNCT(C) ispunct(C)
  67. #define ISSPACE(C) isspace(C)
  68. #define ISUPPER(C) isupper(C)
  69. #define ISXDIGIT(C) isxdigit(C)
  70. #define TOLOWER(C) tolower(C)
  71. #define TOUPPER(C) toupper(C)
  72.  
  73. #else
  74.  
  75. #define ISALNUM(C) (isascii(C) && isalnum(C))
  76. #define ISALPHA(C) (isascii(C) && isalpha(C))
  77. #define ISCNTRL(C) (isascii(C) && iscntrl(C))
  78. #define ISDIGIT(C) (isascii(C) && isdigit(C))
  79. #define ISGRAPH(C) (isascii(C) && isgraph(C))
  80. #define ISLOWER(C) (isascii(C) && islower(C))
  81. #define ISPRINT(C) (isascii(C) && isprint(C))
  82. #define ISPUNCT(C) (isascii(C) && ispunct(C))
  83. #define ISSPACE(C) (isascii(C) && isspace(C))
  84. #define ISUPPER(C) (isascii(C) && isupper(C))
  85. #define ISXDIGIT(C) (isascii(C) && isxdigit(C))
  86. #define TOLOWER(C) (ISUPPER(C) ? tolower(C) : (C))
  87. #define TOUPPER(C) (ISLOWER(C) ? toupper(C) : (C))
  88.  
  89. #endif
  90.  
  91. #ifndef MSDOS
  92. /* Declaring this here should be safe.  Some losing <errno.h>'s don't. */
  93. extern int errno;
  94. #endif
  95.  
  96. /* Adapt variable arguments to new implementations (with <stdarg.h>)
  97.    or old (which are assumed to have <varargs.h>). */
  98.  
  99. #ifdef __STDC__
  100.  
  101. #include <stdarg.h>
  102.  
  103. #define VA_ALIST ...
  104. #define VA_DCL ...
  105. #define VA_LIST va_list
  106. #define VA_START(AP, LASTARG) va_start(AP, LASTARG)
  107. #define VA_ARG(AP, TYPE) va_arg(AP, TYPE)
  108. #define VA_END(AP) va_end(AP)
  109.  
  110. #define VA_DEFUN(F, L, P) F(P)
  111.  
  112. #else
  113.  
  114. #include <varargs.h>
  115.  
  116. #define VA_ALIST va_alist
  117. #define VA_DCL va_dcl
  118. #define VA_LIST va_list
  119. #define VA_START(AP, LASTARG) va_start(AP)
  120. #define VA_ARG(AP, TYPE) va_arg(AP, TYPE)
  121. #define VA_END(AP) va_end(AP)
  122.  
  123. #define VA_DEFUN(F, L, P) F L P
  124.  
  125. #endif
  126.  
  127. /* Declarations of traditional library routines. */
  128. extern double EXFUN(atof, (const char *));
  129. extern int EXFUN(atoi, (const char *));
  130. extern long int EXFUN(atol, (const char *));
  131. extern int EXFUN(rand, (void));
  132. extern void EXFUN(srand, (int));
  133. extern PTR EXFUN(calloc, (size_t, size_t));
  134. extern void EXFUN(free, (PTR));
  135. extern PTR EXFUN(malloc, (size_t));
  136. extern PTR EXFUN(realloc, (PTR, size_t));
  137. extern void EXFUN(abort, (void));
  138. extern void EXFUN(exit, (int));
  139. extern char *EXFUN(getenv, (const char *));
  140. extern int EXFUN(system, (const char *));
  141. extern void EXFUN(qsort, (PTR, size_t, size_t,
  142.               int EXFUN((*), (PTRCONST, PTRCONST))));
  143. extern int EXFUN(abs, (int));
  144. extern long int EXFUN(labs, (long int));
  145.  
  146. #ifdef X_strerror
  147. extern char *EXFUN(strerror, (int));
  148. #endif
  149.